home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / enigma / earcd / comm / comm5 / nwsbrkr5.lha / Reader / NewsBreaker / src / ums / GetMsgNrs.c < prev    next >
Text File  |  1996-12-11  |  4KB  |  192 lines

  1.  
  2. /*---------------------------------------------------------------------
  3.   UMSGetMsgNrs.c
  4.  ---------------------------------------------------------------------*/
  5.  
  6.  
  7. /*
  8.  * GetNew  Message -- hole neue Nachrichtennummer
  9.  *
  10.  * RESULT:
  11.  *   Nummer der anzuzeigenden Nachricht
  12.  *   Null bedeutet Fehler.
  13.  */
  14.  
  15.  
  16. UMSMsgNum
  17. GetNewMsg (UMSUserAccount p_account) /* obsolet, todo */
  18. {
  19.   return (0);
  20. }
  21.  
  22.  
  23. /**********************************************************************
  24.  *                          GetNext Message                           *
  25.  **********************************************************************/
  26.  
  27.  
  28. // hole nächste Nachricht aus der aktuellen Gruppe
  29. /* RESULT:
  30.  * num -- Messagenummer der auf AktNum folgenden Nachricht
  31.  *        NULL, wenn es keine folgende Nachricht gibt.
  32.  */
  33.  
  34. UMSMsgNum
  35. GetNextMsg (UMSUserAccount account, UMSMsgNum AktNum)
  36. {
  37.   STRPTR group = NULL;
  38.   UMSMsgNum num = 0;
  39.   struct List *myList = NULL;
  40.   struct MyNodes *myNode = NULL;    /* Zeiger auf einen Node */
  41.  
  42.   if (AktMsgGroup)
  43.     if (AktNum)            /* Message-Nummer, für die Nachfolge-Message gesucht wird */
  44.       {
  45.     /* Listheader myList holen */
  46.     myList = GetMsgList (account, AktMsgGroup, GlobalFocus);
  47.  
  48.     /* Nodes abzählen und AktNum-ten Node holen */
  49.     myNode = (struct MyNodes *) GetListNodeMsgNum (myList, AktNum);
  50.  
  51.     if (myNode)
  52.       if (myNode->node.ln_Succ->ln_Succ)
  53.         {
  54.           myNode = (struct MyNodes *) (myNode->node.ln_Succ);
  55.  
  56.           if (myNode)
  57.         num = myNode->num;
  58.  
  59.           if (num)
  60.         {
  61.           SetGlobMsgNum (num);
  62.         }
  63.         }
  64.       }
  65.  
  66. /*  if (num == 0) */
  67. /*    printf ("GetNextMsg: liefere (wegen Fehler) Messagenummer Null als Ergebnis!\n"); */
  68.   return (num);
  69. }
  70.  
  71. /**********************************************************************
  72.  *                          GetPrev Message                           *
  73.  **********************************************************************/
  74.  
  75. // hole vorhergehende Nachricht aus der aktuellen Gruppe
  76.  
  77. UMSMsgNum
  78. GetPrevMsg (UMSUserAccount account, UMSMsgNum AktNum)
  79.  
  80. {
  81.   char *group = NULL;        /* Pointer to group name */
  82.   UMSMsgNum num = 0;
  83.   struct List *myList = NULL;
  84.   struct MyNodes *myNode = NULL;    /* Zeiger auf einen Node */
  85.  
  86.   if (AktMsgGroup)
  87.     if (AktNum)
  88.       {
  89.     myList = GetMsgList (account, AktMsgGroup, GlobalFocus);
  90.  
  91.     // Aktueller Node:
  92.  
  93.  
  94.     myNode = (struct MyNodes *) GetListNodeMsgNum (myList, AktNum);
  95.  
  96.     if (myNode)
  97.       if (myNode->node.ln_Pred->ln_Pred)    // den Vorgängernode, wenn
  98.  
  99.         {            // ihn gibt, suchen
  100.  
  101.           myNode = (struct MyNodes *) (myNode->node.ln_Pred);
  102.  
  103.           if (myNode)
  104.         num = myNode->num;
  105.  
  106.           if (num)
  107.         {
  108.           SetGlobMsgNum (num);
  109.         }
  110.         }
  111.       }
  112.  
  113.     else
  114.       {
  115.     num = 0;
  116.       }
  117.   return (num);
  118. }
  119.  
  120.  
  121. /**********************************************************************
  122.  *                          GetFirst Message                          *
  123.  **********************************************************************/
  124.  
  125. UMSMsgNum
  126. GetFirstMsg (UMSUserAccount account)
  127.  
  128. // hole erste Nachricht aus der aktuellen Gruppe
  129.  
  130. {
  131.   char *group = NULL;        /* Pointer to group name */
  132.   UMSMsgNum num = 0;
  133.   struct List *myList = NULL;
  134.   struct MyNodes *myNode = NULL;    /* Zeiger auf einen Node */
  135.  
  136.   if (AktMsgGroup)
  137.     {
  138.       myList = GetMsgList (account, AktMsgGroup, GlobalFocus);
  139.       myNode = (struct MyNodes *) (myList->lh_Head);
  140.  
  141.       if (myNode)
  142.     {
  143.       num = myNode->num;
  144.       SetGlobMsgNum (num);
  145.     }
  146.     }
  147.  
  148.   else
  149.     {
  150.       printf ("GetfirstMsg:");
  151.     }
  152.  
  153.   return (num);
  154. }
  155.  
  156.  
  157.  
  158. /**********************************************************************
  159.  *                          GetLast  Message                          *
  160.  **********************************************************************/
  161.  
  162. UMSMsgNum
  163. GetLastMsg (UMSUserAccount account)
  164.  
  165. // hole letzte Nachricht aus der aktuellen Gruppe
  166.  
  167. {
  168.   char *group = NULL;        /* Pointer to group name */
  169.   UMSMsgNum num = 0;
  170.   struct List *myList = NULL;
  171.   struct MyNodes *myNode = NULL;    /* Zeiger auf einen Node */
  172.  
  173.   if (AktMsgGroup)
  174.     {
  175.       myList = GetMsgList (account, AktMsgGroup, GlobalFocus);
  176.       myNode = (struct MyNodes *) (myList->lh_Tail);
  177.  
  178.       if (myNode)
  179.     {
  180.       num = myNode->num;
  181.       SetGlobMsgNum (num);
  182.     }
  183.     }
  184.  
  185.   else
  186.     {
  187.       printf ("GetLastMsg: PROBLEM mit AktMsgGroup %s", AktMsgGroup);
  188.     }
  189.  
  190.   return (num);
  191. }
  192.